﻿#ifndef TOPICEDIT_H
#define TOPICEDIT_H

#include "ICDConfig/FileOperation.h"
#include <QMap>
#include <QWidget>
#include <QMessageBox>
#include <QStandardItemModel>

namespace Ui {
class TopicEdit;
}

class TopicEdit : public QWidget
{
    Q_OBJECT

public:
    explicit TopicEdit(QWidget *parent = nullptr);
    ~TopicEdit();
    /**
     * @brief getselectedTopicId 获取所选行的主题Id
     * @return 主题Id
     */
    QVariant getselectedTopicId();

signals:
    /**
     * @brief signal_AddTopic 添加主题
     * @param topicId 主题Id
     * @param topicName 主题名称
     */
    void sgl_AddTopic(int &topicId,QString &topicName);
    /**
     * @brief signal_DeleteTopic 删除主题
     * @param topicId 主题Id
     */
    void sgl_DeleteTopic(const QVariant &topicId);
    /**
     * @brief signal_TopicCellValueChanged 单元格值改变信号
     * @param rowId 行Id
     * @param columnIndex 列索引
     * @param value 修改后的值
     * @return 结果码
     */
    int sgl_TopicCellValueChanged(const QVariant &rowId, const int columnIndex,const QVariant &value);
    /**
     * @brief sgl_GetTopicRowData 获取主题行数据
     * @param rowId 行Id
     * @return 该行Id的整行数据
     */
    QVector<QVariant> sgl_GetTopicRowData(const QVariant &rowId);
    /**
     * @brief sgl_LoadSignalInfo 加载该主题Id的信号信息
     * @param type 信号所属父级类型
     * @param selectedTopicId 选择的主题Id
     */
    void sgl_LoadSignalInfo(ParentType type, const QVariant &selectedTopicId);

public slots:
    /**
     * @brief slot_GetSelectedTopicId 获取当前选中项的主题Id
     * @return 主题Id
     */
    int slt_GetSelectedTopicId();

private slots:
    /**
     * @brief on_pushButton_add_clicked 添加主题
     */
    void on_pushButton_add_clicked();
    /**
     * @brief on_pushButton_delete_clicked 删除主题
     */
    void on_pushButton_delete_clicked();
    /**
     * @brief on_lineEdit_search_textChanged 搜索文本改变
     * @param arg1 搜索文本
     */
    void on_lineEdit_search_textChanged(const QString &arg1);
    /**
     * @brief slot_TopicCellValueChanged 单元格值改变
     * @param rowId 行Id
     * @param columnIndex 列索引
     * @param value 改变后的值
     * @return 结果码
     */
    int slt_TopicCellValueChanged(const QVariant &rowId, const int columnIndex,const QVariant &value);
    /**
     * @brief on_pushButton_import_clicked 导入主题信息
     */
    void on_pushButton_import_clicked();
    /**
     * @brief on_tableView_Topic_clicked 选择主题
     * @param index
     */
    void on_tableView_Topic_clicked(const QModelIndex &index);

private:
    Ui::TopicEdit *ui;
    //! 结果码对应的文本信息
    QVector<QString> m_ResultTextVec;

private:
    /**
     * @brief initTopicTableView 初始化主题列表
     */
    void initTopicTableView();

};

#endif // TOPICEDIT_H
